﻿using System;
using System.Windows;
using System.Collections.Generic;
using System.Data;
using InnvoiceActual.Logica.GestorObject;
using InnvoiceActual.BaseDeDatos.innvoicedbDataSetTableAdapters;
using MySql.Data.MySqlClient;

namespace InnvoiceActual.Logica.GestorDB
{
    public class EmpresaDB
    {

        public bool addDatosEmpresa(EmpresaCS miEmpresa)
        {
            int consulResult;
            empresaTableAdapter miTablaEmpresa = new empresaTableAdapter();
            miTablaEmpresa.Connection.Open();
            MySqlTransaction mitransaccion = miTablaEmpresa.Connection.BeginTransaction();
            bool auxExitos = false;

            try
            {

                consulResult = miTablaEmpresa.InsertDatosEmpresa(miEmpresa.RazonSocial,
                                                                 miEmpresa.ResponsableLegal,
                                                                 Convert.ToByte(miEmpresa.TipoDoc),
                                                                 miEmpresa.NumeroDeDoc,
                                                                 miEmpresa.DireccionCorreo,
                                                                 Convert.ToInt16(miEmpresa.CodigoPostal),
                                                                 miEmpresa.Localidad,
                                                                 miEmpresa.Pais,
                                                                 miEmpresa.Telefono,
                                                                 miEmpresa.DireccionCorreo,
                                                                 Convert.ToByte(miEmpresa.TipoContribuyente),
                                                                 Convert.ToDateTime(miEmpresa.InicioActividad),
                                                                 miEmpresa.PaginaWeb,
                                                                 miEmpresa.Provincia,
                                                                 miEmpresa.NumeroDeContrib,
                                                                 Convert.ToInt16(miEmpresa.NroComprabante1));

                mitransaccion.Commit();

                if (consulResult == 1)
                {
                    MessageBox.Show("Operacion de inserción exitosa", "Información", MessageBoxButton.OK);
                    auxExitos = true;
                }

            }
            catch (Exception e)
            {
                mitransaccion.Rollback();
                MessageBox.Show("Error addDatosEmpresa - EmpresaDB" + e.Message, "Cuidado", MessageBoxButton.OK);
            }
            finally
            {
                miTablaEmpresa.Connection.Close();
            }
            return auxExitos;
        }

        public bool actualizarDatos(EmpresaCS miEmpresa)
        {
            int consulResult;
            empresaTableAdapter miTablaEmpresa = new empresaTableAdapter();
            miTablaEmpresa.Connection.Open();
            MySqlTransaction mitransaccion = miTablaEmpresa.Connection.BeginTransaction();
            bool auxExitos = false;
            try
            {
                consulResult = miTablaEmpresa.UpdateQueryDatosEmpresa(miEmpresa.RazonSocial,
                                                                       miEmpresa.ResponsableLegal,
                                                                       Convert.ToByte(miEmpresa.TipoDoc),
                                                                       miEmpresa.NumeroDeDoc,
                                                                       miEmpresa.Direccion,
                                                                       Convert.ToInt16(miEmpresa.CodigoPostal),
                                                                       miEmpresa.Localidad,
                                                                       miEmpresa.Pais,
                                                                       miEmpresa.Telefono,
                                                                       miEmpresa.DireccionCorreo,
                                                                       Convert.ToByte(miEmpresa.TipoContribuyente),
                                                                       Convert.ToDateTime(miEmpresa.InicioActividad),
                                                                       miEmpresa.PaginaWeb,
                                                                       miEmpresa.Provincia,
                                                                       miEmpresa.NumeroDeContrib,
                                                                       Convert.ToInt16(miEmpresa.NroComprabante1),
                                                                       Convert.ToInt16(miEmpresa.CodigoEmpresa));
                mitransaccion.Commit();

                if (consulResult == 1)
                {
                    MessageBox.Show("Operacion de actualización exitosa", "Información", MessageBoxButton.OK);
                    auxExitos = true;
                }
            }
            catch (Exception e)
            {
                mitransaccion.Rollback();
                MessageBox.Show("Error actualizarDatos - EmpresaDB" + e.Message, "Cuidado", MessageBoxButton.OK);
            }
            finally
            {
                miTablaEmpresa.Connection.Close();
            }
            return auxExitos;
        }




        public EmpresaCS datosEmpresa()
        {
            EmpresaCS mEmpr = EmpresaCS.Instance;
            empresaTableAdapter dbEmpresa = new empresaTableAdapter();

            try
            {
                DataTable tablaEmpresa = dbEmpresa.GetData();

                if (tablaEmpresa.Rows.Count > 0)
                {
                    mEmpr.CodigoEmpresa = Convert.ToByte(tablaEmpresa.Rows[0]["codigo_empresa"].ToString());
                    mEmpr.RazonSocial = tablaEmpresa.Rows[0]["razon_social"].ToString();
                    mEmpr.ResponsableLegal = tablaEmpresa.Rows[0]["resp_legal"].ToString();
                    mEmpr.NroComprabante1 = Convert.ToInt16(tablaEmpresa.Rows[0]["nro_comprobante1"]);
                    mEmpr.InicioActividad = Convert.ToDateTime(tablaEmpresa.Rows[0]["inicio_actividad"]);
                    mEmpr.Direccion = tablaEmpresa.Rows[0]["direccion"].ToString();
                    mEmpr.Localidad = tablaEmpresa.Rows[0]["localidad"].ToString();
                    mEmpr.Provincia = tablaEmpresa.Rows[0]["provincia"].ToString();
                    mEmpr.Pais = tablaEmpresa.Rows[0]["pais"].ToString();
                    mEmpr.CodigoPostal = tablaEmpresa.Rows[0]["cod_postal"].ToString();
                    mEmpr.TipoDoc = Convert.ToByte(tablaEmpresa.Rows[0]["tipo_dni"].ToString());
                    mEmpr.NumeroDeDoc = tablaEmpresa.Rows[0]["nro_dni"].ToString();
                    mEmpr.TipoContribuyente = Convert.ToByte(tablaEmpresa.Rows[0]["tipo_contrib"].ToString());
                    mEmpr.NumeroDeContrib = tablaEmpresa.Rows[0]["nro_contrib"].ToString();
                    mEmpr.Telefono = tablaEmpresa.Rows[0]["telefono"].ToString();
                    mEmpr.DireccionCorreo = tablaEmpresa.Rows[0]["correo"].ToString();
                    mEmpr.PaginaWeb = tablaEmpresa.Rows[0]["web"].ToString();
                    mEmpr.ExistenDatos = true;
                }
                else
                {
                    //MessageBox.Show("No hay datos de Empresa disponible", "Información", MessageBoxButton.OK);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Error datosEmpresa - EmpresaDB- " + e.Message, "Error", MessageBoxButton.OK);
            }
            return mEmpr;
        }

        public void desacer()
        {
            empresaTableAdapter empre = new empresaTableAdapter();
            empre.Connection.BeginTransaction().Rollback();
        }


    }
}
